package src.C_io;

import src.A_JavaBase.A;

import java.io.*;
import java.util.ArrayList;

// 反序列化流 和 序列化流
public class Demo13 {
    public static void main(String[] args) throws IOException, ClassNotFoundException {
        /*
          定义：
            和缓冲流一样也是一种高级流，用来包装基本流，属于字节流的一种
          系列化流（ObjectOutputStream）：
            可以把Java中的对象写到本地文件中
          反系列化流（ObjectInputStream）：
            把本地文件中的对象写到Java中
        */
        // 序列化
        ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("src/C_io/d.txt"));
        ArrayList<Demo13_Student> arrayList = new ArrayList<>();
        arrayList.add(new Demo13_Student(true,18,"六一",'女'));
        arrayList.add(new Demo13_Student(true,19,"六二",'男'));
        arrayList.add(new Demo13_Student(true,10,"六三",'女'));
        oos.writeObject(arrayList); // ps：序列化多个对象可以用arrayList，单个可以不用
        oos.close();
        // 反序列化
        ObjectInputStream ois = new ObjectInputStream(new FileInputStream("src/C_io/d.txt"));
        ArrayList<Demo13_Student> list = (ArrayList<Demo13_Student>) ois.readObject(); // 强转
        for (Demo13_Student ds : list){
            System.out.println(ds);
        }
        ois.close();
    }
}
